package org.focusj.scala.colls

import java.io.File
import java.io.FileNotFoundException

object LazyView {
    print((0 until 1000 by 3).view) //返回整个集合的view
    print((0 until 1000 by 3).view(20)) //只是返回第二十个元素
    print((0 until 1000 by 3).view.force) //force: 强制将所有的结果计算出来，慎用
    println()
    println("*******************************part one********************************")

    //假设我们要对一个big collection做一个map操作，那么view会非常的有用了
    //现在的集合比较小，但是(o to 1000000000)这个Range可以让你的电脑热身一会了,但是我没必要再类加载的时候来计算出，
    //只需要在使用的时候计算
    def i(n: Int): Int = {
        val v = (0 to 100000) map (m => m * m)
        v(n)
    }

    def ii(n: Int): Int = (0 to 100000) map (m => m * m) view (n) //这里返回view视图，则当程序切实用到这个集合时开始计算
    println(ii(10))

    val fib: Stream[Int] = Stream.cons(1, Stream.cons(1, (fib zip fib.tail).map(p => p._1 + p._2)))

}